package com.zlc.platform.service;

import com.zlc.common.common.entity.PageVo;
import com.zlc.common.core.sys.model.vo.MayanSysNotificationVo;
import com.zlc.common.model.sys.NotificationRequest;

import java.util.List;

/**
 * 通知服务
 */
public interface NotificationService {

    /**
     * 给指定用户发送消息
     * @param toUserId   接收人id
     * @param title   标题
     * @param content  内容
     */
    void sendNotification(String toUserId, String title, String content);


    /**
     * 给指定用户发送消息
     * @param notificationType  消息类型
     * @param toUserId   接收人id
     * @param title   标题
     * @param content  内容
     */
    void sendNotification(String notificationType,String toUserId, String title, String content);

    /**
     * 给指定用户发送消息
     * @param notificationType  消息类型
     * @param toUserId   接收人id
     * @param title   标题
     * @param content  内容
     * @param linkUri  链接地址
     */
    void sendNotification(String notificationType,String toUserId, String title, String content, String linkUri);


    /**
     * 给指定用户集合发送消息
     * @param toUserIds   接收人id
     * @param title   标题
     * @param content  内容
     */
    void sendNotification(List<String> toUserIds, String title, String content);

    /**
     * 给指定用户集合发送消息
     * @param notificationType  消息类型
     * @param toUserIds   接收人id
     * @param title   标题
     * @param content  内容
     */
    void sendNotification(String notificationType,List<String> toUserIds, String title, String content);

    /**
     * 给指定用户集合发送消息
     * @param toUserIds   接收人id
     * @param title   标题
     * @param content  内容
     * @param linkUri  链接地址
     */
    void sendNotification(List<String> toUserIds, String title, String content, String linkUri);

    /**
     * 给指定用户集合发送消息
     * @param notificationType  消息类型
     * @param toUserIds   接收人id
     * @param title   标题
     * @param content  内容
     * @param linkUri  链接地址
     */
    void sendNotification(String notificationType,List<String> toUserIds, String title, String content, String linkUri);

    /**
     * 发送系统公告
     * @param title  标题
     * @param content 内容
     */
    void sendPublicNotification(String title, String content);


    /**
     * 发送系统公告
     * @param title  标题
     * @param content 内容
     * @param linkUri  链接
     */
    void sendPublicNotification(String title, String content, String linkUri);

    /**
     * 发送消息
     * @param notificationVo 消息实体
     */
    void sendNotification(MayanSysNotificationVo notificationVo);

    /**
     * 发送多个消息
     * @param notificationVos 多个消息实体
     */
    void sendNotifications(List<MayanSysNotificationVo> notificationVos);

}
